import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';
import path from 'path';
import AutoImport from 'unplugin-auto-import/vite';
import legacy from '@vitejs/plugin-legacy';
import vitePluginTemplateInset from "@yck-web/vite-plugin-template-inset";

const DotEnv = require('dotenv');

// 打包环境
const env = process.argv[process.argv.length - 1];
const platform = process.argv[process.argv.length - 3];
const appRes = DotEnv.config({ path: `${process.cwd()}/.env.${env}` }).parsed.VITE_VUE_APP_RES;
console.log('weixin----', env, appRes, platform);

// 请勿修改，请至该目录查看 readme 了解更多
const autoImportsDir = 'auto-import';

// https://vitejs.dev/config/
export default defineConfig(() => {
  if (platform === 'h5') {
    return {
      plugins: [
        legacy({
          targets: ['defaults', 'not IE 11']
        }),
        uni(),
        AutoImport({
          include: [
            /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
            /\.vue$/,
            /\.vue\?vue/, // .vue
          ],
          imports: ['vue', 'uni-app', 'pinia'],
          eslintrc: {
            enabled: true,
            filepath: `./${autoImportsDir}/.eslint-auto-import.json`,
            globalsPropValue: true,
          },
          dts: `./${autoImportsDir}/globals-auto-import.d.ts`,
        }),
      ],
      css: {
        postcss: {
          plugins: [
            require('postcss-pxtorpx-pro')({
              // 转化的单位
              unit: 'rpx',
              // 单位精度
              unitPrecision: 5,
              // 不需要处理的css选择器
              selectorBlackList: [],
              propList: ['*'],
              // 不需要转化的css属性
              propBlackList: [],
              // 直接修改px，还是新加一条css规则
              replace: true,
              // 是否匹配媒介查询的px
              mediaQuery: false,
              // 需要转化的最小的pixel值，低于该值的px单位不做转化
              minPixelValue: 2,
              // 不处理的文件
              exclude: /node_modules/gi,
              // 转化函数
              // 视口375px
              transform: (x: any) => 2 * x,
            }),
          ],
        },
        preprocessorOptions: {
          scss: {
            additionalData: `$url: '${appRes}';`,
          }
        }
      },
      resolve: {
        alias: {
          '@': path.resolve(__dirname, './src'),
          '@components': path.resolve(__dirname, './src/components'),
          '@mixins': path.resolve(__dirname, './src/mixins'),
          '@pages': path.resolve(__dirname, './src/pages'),
          '@static': path.resolve(__dirname, './src/static'),
        },
      },
    }
  } else {
    return {
      plugins: [
        vitePluginTemplateInset(["<QcToast></QcToast>"]),
        uni(),
        AutoImport({
          include: [
            /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
            /\.vue$/,
            /\.vue\?vue/, // .vue
          ],
          imports: ['vue', 'uni-app', 'pinia'],
          eslintrc: {
            enabled: true,
            filepath: `./${autoImportsDir}/.eslint-auto-import.json`,
            globalsPropValue: true,
          },
          dts: `./${autoImportsDir}/globals-auto-import.d.ts`,
        }),
      ],
      css: {
        postcss: {
          plugins: [
            require('postcss-pxtorpx-pro')({
              // 转化的单位
              unit: 'rpx',
              // 单位精度
              unitPrecision: 5,
              // 不需要处理的css选择器
              selectorBlackList: [],
              propList: ['*'],
              // 不需要转化的css属性
              propBlackList: [],
              // 直接修改px，还是新加一条css规则
              replace: true,
              // 是否匹配媒介查询的px
              mediaQuery: false,
              // 需要转化的最小的pixel值，低于该值的px单位不做转化
              minPixelValue: 2,
              // 不处理的文件
              exclude: /node_modules/gi,
              // 转化函数
              // 视口375px
              transform: (x: any) => 2 * x,
            }),
          ],
        },
        preprocessorOptions: {
          scss: {
            additionalData: `$url: '${appRes}';`,
          }
        }
      },
      resolve: {
        alias: {
          '@': path.resolve(__dirname, './src'),
          '@components': path.resolve(__dirname, './src/components'),
          '@mixins': path.resolve(__dirname, './src/mixins'),
          '@pages': path.resolve(__dirname, './src/pages'),
          '@static': path.resolve(__dirname, './src/static'),
        },
      },
    }
  }
});
